package com.sert.pet.manager;

import com.sert.pet.IPet;

/**
 * 
 * 1个宠物商店可以放置多个宠物
 * 	1.1宠物要放在宠物的数组中
 *  1.2宠物放在数组中的那个位置 比如这个猫是放在第3个位置
 *  
 *  在宠物商店中对宠物进行管理
 *  	1：增加一个宠物
 *  	2：删除一个宠物
 *  	3.修改宠物的年龄
 *  	4.根据名字查找宠物s 因为相同的宠物可能会有多个
 * @author My
 *
 */
public class PetShop {
	
	/**
	 * 宠物放在数组宠物的数组中
	 */
	private IPet[] petArray;
	
	
	/**
	 * index的默认值0
	 * 宠物放在宠物数组的位置
	 */
	private int index;
	
	
	public PetShop(int len){
		
		petArray=new IPet[len];
		System.out.println("创建了一个宠物商店，这个宠物商店有"+len+"笼子");
	}


	public IPet[] getPetArray() {
		return petArray;
	}
	
	
	/**
	 *1.思想：面向接口编程
	 *		1.1 ：坑1,在形参中用接口来表示 ，不能用类来表示  只能用（IPet pet）不能用（Cat cat）
	 *		1.2: 坑2，在调用的时候不是接口，而是用接口的实现类 比如Cat Dog Rabbit
	 *
	 *2.优点：
	 *		可以不用修改代码  一统江湖
	 * 		
	 * @param pet
	 * @return
	 */
	public  boolean add(IPet pet){
		
		//1先判断这个笼子是否满了 
		if(index>=10){
			//2如果满了直接返回false
			System.out.println("宠物添加失败、、");
			return false;
		}else{
			//3如果没满 就可以放进去 
			petArray[index]=pet;
			
			//4.问题：放在哪里？先遍历数组等到最后一个宠物的下标
			index=index+1;
			System.out.println("宠物添加宠物、、");
			return true;
		}
	}
	
	
	/**
	 * 根据宠物的名字 查找符号条件的数组
	 * @param name 宠物的名字
	 * @return 宠物的数组
	 */
	public IPet[] searchByName(String name){
		//计算器
		int counter=0;
		
		//1 在宠物的笼子中去找 petArray 遍历 拿到一只具体的宠物
		for(int index=0;index<10;index++){
			IPet pet = petArray[index];
			
			if(null != pet){
				//2如果这个宠物的名字与要查找的名字相同 就说明找到1个了 丢到新的笼子中去
				String petName=pet.getName();
				Boolean flag=petName.contains(name);
				
				if(flag){
					//就说明找到了
					counter+=1;
				}
			}
		}
		
		//2准备counter大小的笼子
		IPet[] newArray=new IPet[counter];
		int number=0;
		
		for(int index=0;index<10;index++){
			IPet pet = petArray[index];
			
			if(null != pet){
				//2如果这个宠物的名字与要查找的名字相同 就说明找到1个了 丢到新的笼子中去
				String petName=pet.getName();
				Boolean flag=petName.contains(name);
				
				if(flag){
					newArray[number]=pet;
					number++;
				}
			}
		}
		
		
		
		//3问题 要多大的笼子  应该找到符合条件的的宠物的个数
		
		
		
		
		return newArray;
		
	}

	
	
	
	
	
	
	
	

}
